{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Cite{https://arxiv.org/pdf/1910.12933.pdf}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "\n",
    "import geoopt\n",
    "import torch as th\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "from geoopt.manifolds.lorentz import Lorentz\n",
    "from geoopt.manifolds.lorentz import math"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\n",
    "\\mathbb{H}^{d, K}:=\\left\\{\\mathbf{x} \\in \\mathbb{R}^{d+1}:\\langle\\mathbf{x}, \\mathbf{x}\\rangle_{\\mathcal{L}}=-K, x_{0}>0\\right\\} \\quad \\mathcal{T}_{\\mathbf{x}} \\mathbb{H}^{d, K}:=\\left\\{\\mathbf{v} \\in \\mathbb{R}^{d+1}:\\langle\\mathbf{v}, \\mathbf{x}\\rangle_{\\mathcal{L}}=0\\right\\}\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "k = 3 # choose curvature parameter\n",
    "dim = 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "man = Lorentz(k=k)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Projection on manifold"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = th.randn((20,dim)) # sample points (~N(0,1))\n",
    "x = man.projx(x) # project onto the hyperboloid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(True, None)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# check if single point is in Hyperboloid\n",
    "man._check_point_on_manifold(x[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_np = x.numpy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "lins_x = np.linspace(-3, 3, 100)\n",
    "linx_y = np.sqrt(k + lins_x**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f6c157ab630>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(lins_x, linx_y, color=\"C1\", label=\"Hyperboloid\")\n",
    "plt.scatter(x_np[:,1], x_np[:,0], label=\"Sampled points\")\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Projection on tangent space"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "p = x\n",
    "u = th.randn(20,dim)\n",
    "u = man.proju(p, u) # project on tangent space"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(True, None)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# check vector is in tangent space of point x\n",
    "man._check_vector_on_tangent(p, u)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f6c15739a20>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(lins_x, linx_y, color=\"C0\", label=\"Hyperboloid\")\n",
    "plt.scatter(x_np[:,1], x_np[:,0], label=\"Sampled points\")\n",
    "for i in range(20):\n",
    "    plt.arrow(p[i,1], p[i,0], u[i,1], u[i,0], width=0.01, color=\"C1\")\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Parallel transport"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\n",
    "P_{\\mathbf{x} \\rightarrow \\mathbf{y}}(\\mathbf{v})=\\mathbf{v}-\\frac{\\left\\langle\\log _{\\mathbf{x}}(\\mathbf{y}), \\mathbf{v}\\right\\rangle_{\\mathcal{L}}}{d_{\\mathcal{L}}^{1}(\\mathbf{x}, \\mathbf{y})^{2}}\\left(\\log _{\\mathbf{x}}(\\mathbf{y})+\\log _{\\mathbf{y}}(\\mathbf{x})\\right)\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_start = th.randn((1,dim))\n",
    "x_start = man.projx(x_start)\n",
    "\n",
    "u_on_s = th.randn((1, dim))\n",
    "u_on_s = u_on_s / u_on_s.norm(dim=-1)\n",
    "u_on_s = man.proju(x_start, u_on_s)\n",
    "\n",
    "x_end = th.randn((1,dim))\n",
    "x_end = man.projx(x_end)\n",
    "\n",
    "\n",
    "u_on_e = th.randn((1, dim))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Initial setup')"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(lins_x, linx_y, color=\"C1\", label=\"Hyperboloid\")\n",
    "plt.scatter(x_start[0,1], x_start[0,0], color=\"C0\", label=\"Start point\")\n",
    "plt.arrow(x_start[0,1], x_start[0,0], u_on_s[0,1], u_on_s[0,0], width=0.01, color=\"C2\")\n",
    "\n",
    "plt.scatter(x_end[0,1], x_end[0,0], color=\"C3\", label=\"End point\")\n",
    "plt.legend()\n",
    "plt.title(\"Initial setup\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "u_on_e = man.transp(x_start, x_end, u_on_s) # find the transported vector"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Parallel transport')"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(lins_x, linx_y, color=\"C1\", label=\"Hyperboloid\")\n",
    "plt.scatter(x_start[0,1], x_start[0,0], color=\"C0\", label=\"Start point\")\n",
    "plt.arrow(x_start[0,1], x_start[0,0], u_on_s[0,1], u_on_s[0,0], width=0.01, color=\"C2\")\n",
    "\n",
    "plt.scatter(x_end[0,1], x_end[0,0], color=\"C3\", label=\"End point\")\n",
    "plt.arrow(x_end[0,1], x_end[0,0], u_on_e[0,1], u_on_e[0,0], width=0.01, color=\"C2\")\n",
    "\n",
    "plt.legend()\n",
    "plt.title(\"Parallel transport\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Expmap"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\\exp _{\\mathbf{x}}^{K}(\\mathbf{v})=\\cosh \\left(\\frac{\\|\\mathbf{v}\\|_{\\mathcal{L}}}{\\sqrt{K}}\\right) \\mathbf{x}+\\sqrt{K} \\sinh \\left(\\frac{\\|\\mathbf{v}\\|_{\\mathcal{L}}}{\\sqrt{K}}\\right) \\frac{\\mathbf{v}}{\\|\\mathbf{v}\\|_{\\mathcal{L}}}\\\\\n",
    "\\log _{\\mathbf{x}}^{K}(\\mathbf{y})=d_{\\mathcal{L}}^{K}(\\mathbf{x}, \\mathbf{y}) \\frac{\\mathbf{y}+\\frac{1}{K}\\langle\\mathbf{x}, \\mathbf{y}\\rangle_{\\mathcal{L}} \\mathbf{x}}{\\left\\|\\mathbf{y}+\\frac{1}{K}\\langle\\mathbf{x}, \\mathbf{y}\\rangle_{\\mathcal{L}} \\mathbf{x}\\right\\|_{\\mathcal{L}}}\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_start = th.randn((1,dim))\n",
    "x_start = man.projx(x_start)\n",
    "\n",
    "u_on_s = th.randn((1, dim))\n",
    "u_on_s = man.proju(x_start, u_on_s)\n",
    "\n",
    "pe = man.expmap(x_start, u_on_s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(True, None)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "man._check_point_on_manifold(pe[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Exp mapping')"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEICAYAAABRSj9aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dd3hUZfbA8e9JgdCkRqWDjR4SCAgiEDqIICAWVIRVl8W1r+uK7gKCuuLqqotlFX+iroKVIqIooFTpYASlCApSpQRCLynn98c7xBBDGpPcmcn5PM88zNz7zr3nJuTMnfe+97yiqhhjjAldYV4HYIwxpnBZojfGmBBnid4YY0KcJXpjjAlxluiNMSbEWaI3xpgQZ4neGI+JSFsR2eB1HCZ0iY2jN4FGRLYAFwBpmRa/pap3exORMcEtwusAjDmLXqo62+sgjAkF1nVjgoqI/FdEJmV6/bSIfCVOgohsF5FHRWSfiGwRkZtz2NZcEXlCRBaJyBER+VREKovIBBE5JCLLRaROpvb/EZFtvnUrRaRtpnWPicjHIvKBiBwWkVUi0jTT+i0i8oiIrBWRAyLypohE+dYliMj2LG3/KiKrReSgb5tRmdb/TUR2ichOEblDRFRELvHHz9eEJkv0Jtg8CDQRkcG+RHs7MEh/64O8EKgCVAcGAeNEpF4O27sRGOhrfzGwGHgTqASsA0ZmarsciPWtmwh8lDkBA9cAH2VaP1VEIjOtvxno5tvPZcA/cojreqA7UBeIAQYDiEh34C9AZ+ASICGHbRgDWKI3gWuqiCRnevwRQFWP4RLzc8C7wD2quj3Le4er6klVnQd8hkuaZ/Omqv6kqgeBGcBPqjpbVVNxSTvudENVfVdVk1Q1VVX/DZQEMn+IrFTVj1U1xRdfFNAq0/qXVHWbqu4HngQG5BDXWFXd6Wv7Ke4DBt+xvKmqP/h+Fo/lsA1jAEv0JnD1UdUKmR6vn16hqkuBnwEBPszyvgOqejTT61+AajnsZ3em58ezeV329Atfd8o6X3dKMlAe9+3htG2ZYkwHtmfZ97ZMz3OL69dMz49liqNalu1kfm5MtizRm6AjInfhzqZ3An/LsrqiiJTJ9LqWr9257rOtb1/XAxVVtQJwEPdhc1rNTO3DgBpZ9l0z0/OCxrXLt93stmlMtizRm6AiIpcBTwC34Lpw/iYisVmajRKREr7kfDWuC+ZclQNSgb1AhIiMAM7L0qa5iPQTkQjgfuAksCTT+rtEpIaIVAL+DnxQgDg+BP4gIg1EpDQwvADbMMWMJXoTqD71jYQ5/ZjiS6DvAk+r6nequhF4FHhHREr63vcrcAB3tjwBGKqq6/0Qz5fAF8CPuG6XE/y+2+QT4Abf/gcC/Xz99adNBGbiup1+wn1g5YuqzgDGAnOATfz2QXIyv9syxYfdMGVChogkAO+qao3c2hbCvh8DLlHVW86yfgtwh7/vDRCRBsD3QEnfBWRjfsfO6I0JMiLSV0RKikhF4GngU0vyJieW6I0JPn8C9uC6f9KAO70NxwQ667oxxpgQZ2f0xhgT4gKyqFmVKlW0Tp06XodhjDFBY+XKlftUNTq7dQGZ6OvUqcOKFSu8DsMYY4KGiPxytnXWdWOMMSEu10QvIlEiskxEvhORH0RkVDZtBovIXhFJ9D3uyLRukIhs9D0G+fsAjDHG5CwvXTcngY6qesRXcnWhiMxQ1SVZ2n2QdQYg363eI4F4QIGVIjJNVQ/4I3hjjDG5yzXR++p8H/G9jPQ98jomsxswy1dqFRGZhaux/V7+QzWBLiUlhe3bt3PixAmvQzEFFBUVRY0aNYiMjMy9sQkaeboYKyLhwErcRAcv+8rEZnWtiLTD1QJ5QFW34SZzyFwPZLtvWXb7GAIMAahVq1aeD8AEju3bt1OuXDnq1KmDiOT+BhNQVJWkpCS2b99O3bp1vQ7H+FGeLsaqapqqxuLKo7YUkcZZmnwK1FHVGGAW8HZ+A1HVcaoar6rx0dHZjhAyAe7EiRNUrlzZknyQEhEqV65s38hCUL5G3ahqMq5qXvcsy5NU9XT1vP8Dmvue7+DMetk1fMtMiLIkH9zs9xea8jLqJlpEKvielwK6AOuztKma6WVv3Fyb4Eq7dhWRir4CTF19y/wv5QQsehF+WVQomzfGmEK16StY+hqkpeTeNp/yckZfFZgjIqtxkyPPUtXpIjJaRHr72tzrG3r5HXAvvomMfRdhH/e9bzkw+vSF2UKx+BWYPQqsfk+xVbZs2TNev/XWW9x9991nae0fc+fO5eqrr87Xe+rUqcO+fftybHPFFVdku3zw4MF8/PHH+dqfCXDp6TBrBCx9lTMnLfOPvIy6WU2mCZIzLR+R6fkjwCNnef94YPw5xJg3kVHQ7kH47EH3yXhp50LfpTGpqYVXHXjRIvt2WmysnQq7v4d+r0O4/wsWhNadsXG3Qvla8PXjdlZvznD48GHq1q1LSor7Wnzo0KGM1wkJCdx3333ExsbSuHFjli1bBsDRo0e57bbbaNmyJXFxcXzyySeA+5bQu3dvOnbsSKdOnTK217NnT+rVq8fQoUNJT08H4L333qNJkyY0btyYhx9+ONvYnnvuORo3bkzjxo154YUXMpaf/naiqtx9993Uq1ePzp07s2fPnsL5IRlvpKXCnH9CdH1ofG2h7CIga90UWEQJSHgYPrkL1n8GDfL3ddr40Yxh8Osa/27zwibQY0yOTY4fP05s7G9TyO7fv5/evXtTrlw5EhIS+Oyzz+jTpw/vv/8+/fr1yxgvfuzYMRITE5k/fz633XYb33//PU8++SQdO3Zk/PjxJCcn07JlSzp3dt8UV61axerVq6lUqRJz585l2bJlrF27ltq1a9O9e3cmT57MFVdcwcMPP8zKlSupWLEiXbt2ZerUqfTp0ycjvpUrV/Lmm2+ydOlSVJXLL7+c9u3bExf325foKVOmsGHDBtauXcvu3btp2LAht912mz9/ssZLaz6CpI1w/f8gLLxQdhFaZ/QAMTdCpYvdJ6TvrMoUH6VKlSIxMTHjMXr06Ix1d9xxB2+++SYAb775Jn/4wx8y1g0YMACAdu3acejQIZKTk5k5cyZjxowhNjaWhIQETpw4wdatWwHo0qULlSpVynh/y5YtueiiiwgPD2fAgAEsXLiQ5cuXk5CQQHR0NBEREdx8883Mnz//jHgXLlxI3759KVOmDGXLlqVfv34sWLDgjDbz589nwIABhIeHU61aNTp27OjfH5rxTloKzBsDF8ZA/V6FtpvQOqMH17+V8AhMvgN+mAxN+nsdUfGUy5m3F9q0acOWLVuYO3cuaWlpNG782+0gWYcVigiqyqRJk6hXr94Z65YuXUqZMmV+1z6n18ZkK3ECHNgCAz6AsMI77w69M3qAxv0gugHMfcr1fxnjc+utt3LTTTedcTYP8MEHHwDuDLt8+fKUL1+ebt268eKLL3J6FrZvv/32rNtdtmwZmzdvJj09nQ8++IArr7ySli1bMm/ePPbt20daWhrvvfce7du3P+N9bdu2ZerUqRw7doyjR48yZcoU2rZte0abdu3a8cEHH5CWlsauXbuYM2eOP34UxmspJ2Dev6B6PFzWrVB3FZqJPiwcOjwKSZtg9QdeR2MCyM0338yBAwcyumpOi4qKIi4ujqFDh/LGG28AMHz4cFJSUoiJiaFRo0YMHz78rNtt0aIFd999Nw0aNKBu3br07duXqlWrMmbMGDp06EDTpk1p3rw511xzzRnva9asGYMHD6Zly5Zcfvnl3HHHHWf0zwP07duXSy+9lIYNG3LrrbfSunVrP/00jKdWvgWHdkDHf0AhfwMMyDlj4+Pj9ZwnHlGFcQlwfD/cvdJdqDWFat26dTRo0MDrMHL08ccf88knn/DOO+9kLEtISODZZ58lPj7ew8gCRzD8HoPeqaPwn1iIrgeDPvVLoheRlaqa7X/i0OujP00EOg6HCdfCt/+DFnfk/h4T0u655x5mzJjB559/7nUoprhb9joc3QM3vFPoZ/MQyoke4JJOULMVzH8WYm+GyFJeR2Q89OKLL2a7fO7cuUUbiCneThyCb16AS7pArVZFssvQ7KM/TQQ6DYfDu2D5G15HY4wxsOQVOH4AOv69yHYZ2okeoM6VcFECLHwOTh72OhpjTHF2bD8segka9IJqv6ssU2hCP9EDdBwBx5JgyateR2KMKc6+eQFOHYEORXc2D8Ul0ddoDvWucmWMj9t0tcYYDxz+FZaOg5jr4fyiHdVUPBI9uE/Qk4fgm7FeR2IK0ZNPPkmjRo2IiYkhNjaWpUvdrJcvvPACx44dy/f23nrrLXbu3OmX2KZNm8aYMTnfMbxlyxYmTpzol/2ZADP/WUhPgYRhRb7r4pPoL2zsKsMtfRWOWPW/ULR48WKmT5+eUXBs9uzZ1KzpJjgrSKJPS0vza6Lv3bs3w4bl/EduiT5EHfjF3SAVNxAqXVTkuy8+iR7c3bKpJ2HBv72OxABTv91BmzFfU3fYZ7QZ8zVTvz23WSZ37dpFlSpVKFmyJABVqlShWrVqjB07lp07d9KhQwc6dOgAwJ133kl8fDyNGjVi5MiRGduoU6cODz/8MM2aNeO9995jxYoV3HzzzcTGxnL8+PEz9ne28sb79++nT58+xMTE0KpVK1avXg2cOQnK4MGDuffee7niiiu46KKLMiYSGTZsGAsWLCA2Npbnn3/+nH4eJoDM+xdIGLR7yJPdF69EX/liiL0JVoyH5G1eR1OsTf12B49MXsOO5OMosCP5OI9MXnNOyb5r165s27aNyy67jD//+c/MmzcPgHvvvZdq1aoxZ86cjDoxTz75JCtWrGD16tXMmzcvIxkDVK5cmVWrVnHLLbcQHx/PhAkTSExMpFSp39+Hcbq88SuvvJJROnjkyJHExcWxevVq/vnPf3LrrbdmG++uXbtYuHAh06dPzzjTHzNmDG3btiUxMZEHHnigwD8LE0D2/gjfTXQ3bZav7kkIxSvRA7T3Tf4w72lv4yjmnvlyA8dT0s5YdjwljWe+3FDgbZYtW5aVK1cybtw4oqOjueGGG3jrrbeybfvhhx/SrFkz4uLi+OGHH1i7dm3GuhtuuCHP+8yuvPHChQsZOHAgAB07diQpKYlDhw797r19+vQhLCyMhg0bsnv37nwcqQkqc56EyNLQ9i+ehVD8En2FmhB/OyROhH0bvY6m2NqZfDxfy/MqPDychIQERo0axUsvvcSkSZN+12bz5s08++yzfPXVV6xevZqePXty4sSJjPVZSxDn5FzKE5/uYgIIxJpTxg92JrppAlv9GcpU8SyM4pfowX2yRkS5yUmMJ6pVyL4cxdmW58WGDRvYuPG3D+/ExERq164NQLly5Th82N0wd+jQIcqUKUP58uXZvXs3M2bMOOs2M78vO9mVN27bti0TJkwAXHmFKlWqcN555+XpGHLbnwkyXz8BURXgisKdoD43uda6EZEoYD5Q0tf+Y1UdmaXNX4A7gFRgL3Cbqv7iW5cGnJ5Tbquq9vZf+AVU9nxodScseNYl/QubeB1RsfNQt3o8MnnNGd03pSLDeahbvRzelbMjR45wzz33kJycTEREBJdccgnjxo0DYMiQIXTv3j2jrz4uLo769etTs2ZN2rRpc9ZtDh48mKFDh1KqVCkWL178u3760+WNU1JSGD9+PACPPfYYt912GzExMZQuXZq33347z8cQExNDeHg4TZs2ZfDgwdZPH8x+WQybZkHnURBV3tNQci1TLO67aBlVPSIikcBC4D5VXZKpTQdgqaoeE5E7gQRVvcG37oiqls1PUH4pU5yb48nwnxhX9OzmDwt3X8VEfsvbTv12B898uYGdycepVqEUD3WrR584by5WFUSolje2MsV+oApvXgX7f4J7E6FE6ULf5TmVKVb3SXDE9zLS99AsbTJPebMEuKVgoRahUhWgzf3w1SjYuqTIqsiZ3/SJqx5Uid2YPNs0G7YugqueLZIkn5s89dGLSLiIJAJ7gFmqujSH5rcDmTs9o0RkhYgsEZE+OexjiK/dir179+Yp+HN2+VAoewHMHuU+gY3Jh7lz54bc2bzxg/R0+Go0VKgNzQZ5HQ2Qx0SvqmmqGgvUAFqKSOPs2onILUA88EymxbV9XyduAl4QkYvPso9xqhqvqvHR0dH5OogCK1Ha3cCwdRFs+qpo9mmMCW1rp8Kvq13ZlQCZ2S5fo25UNRmYA3TPuk5EOgN/B3qr6slM79nh+/dnYC5QdLU586LZIPfJ+9Uo90lsjDEFlZbqxs1HN4Am/b2OJkOuiV5EokWkgu95KaALsD5LmzjgNVyS35NpeUURKel7XgVoA6wlkESUcKURfl3tPomNMaagEidA0iY34VFYuNfRZMjLGX1VYI6IrAaW4/rop4vIaBE5PVTyGaAs8JGIJIrINN/yBsAKEfkO901gjKoGVqIHaHKd+wSe86T7RDbGmPxKOeHuuK/RwpVFDyC5JnpVXa2qcaoao6qNVXW0b/kIVZ3me95ZVS9Q1Vjfo7dv+SJVbaKqTX3/BuZ8fmHh7hM4aZP7RDZBKzw8PKPIWK9evUhOTs6xfXJyMq+88orf9j937lwWLVqU7/fVqVOHffv2nfP+R4wYwezZs3NsU9AYTS6W/x8c2gGdRhTJhN/5UTzvjM1OvavcJ/HcMZBybrfhG++UKlWKxMREvv/+eypVqsTLL7+cY/ucEn1qav6/3XmdREePHk3nzp1zbON1jCHpxEFXFffijlC3ndfR/I4l+tNEoPNjcHgnLHvd62iKhYOffsrGjp1Y16AhGzt24uCnn/p1+61bt2bHjt+qYT7zzDO0aNGCmJiYjNLEw4YN46effiI2NpaHHnqIuXPn0rZtW3r37k3Dhg0BV3ysefPmNGrUKONOW4AvvviCZs2a0bRpUzp16sSWLVt49dVXef7554mNjWXBggXs3buXa6+9lhYtWtCiRQu++eYbAJKSkujatSuNGjXijjvuOGutm7Jly/LAAw/QqFEjOnXqxOmhx4mJibRq1YqYmBj69u3LgQNu5rTBgwdnlDyuU6cOI0eOpFmzZjRp0oT169dnG6Pxg0UvwfH97mw+EKlqwD2aN2+unvlfX9UxtVWPJ3sXQ5Bau3ZtntsmT5um65rG6tp69TMe65rGavK0aecUQ5kyZVRVNTU1Vfv3768zZsxQVdUvv/xS//jHP2p6erqmpaVpz549dd68ebp582Zt1KhRxvvnzJmjpUuX1p9//jljWVJSkqqqHjt2TBs1aqT79u3TPXv2aI0aNTLanW4zcuRIfeaZZzLeO2DAAF2wYIGqqv7yyy9av359VVW95557dNSoUaqqOn36dAV07969vzseQN99911VVR01apTeddddqqrapEkTnTt3rqqqDh8+XO+77z5VVR00aJB+9NFHqqpau3ZtHTt2rKqqvvzyy3r77bdnG2NW+fk9GlU9vFv1iaqqH9zqaRjACj1LTs31zthip9MIGNfezS/b8R9eRxOy9jz/ApqpYiSAnjjBnudfoHyvXgXe7vHjx4mNjWXHjh00aNCALl26ADBz5kxmzpxJXJwb3XvkyBE2btxIrVq1freNli1bUrdu3YzXY8eOZcqUKQBs27aNjRs3snfvXtq1a5fRrlKlStnGM3v27DNKIB86dIgjR44wf/58Jk+eDEDPnj2pWLFitu8PCwvLKJt8yy230K9fPw4ePEhycjLt27cHYNCgQVx33XXZvr9fv34ANG/ePGN/xs8W/BtSTwR0vrBEn1W1WGjUDxa/DC3+COUu8DqikJS6a1e+lufV6T76Y8eO0a1bN15++WXuvfdeVJVHHnmEP/3pT2e037Jly++2kblM8dy5c5k9ezaLFy+mdOnSJCQknFHSODfp6eksWbKEqKioAh9TZvkpgwy/lUIODw8v0DUHk4sDW2D5GxB3M1S51Otozsr66LPT8R+QdgrmP5N7W1MgEVWr5mt5fpUuXZqxY8fy73//m9TUVLp168b48eM5csSVbdqxYwd79uzJtSzwwYMHqVixIqVLl2b9+vUsWeJq+bVq1Yr58+ezefNmwE0fCL8vM9y1a1defPHFjNeJiYmAm6jk9NywM2bMyOhjzyo9PT2jz33ixIlceeWVlC9fnooVK2b0r7/zzjsZZ/d5YaWQ/WjOU27UXsIjXkeSI0v02al8MTS7FVa+Cft/9jqakHT+A/cjWc5yJSqK8x+432/7iIuLIyYmhvfee4+uXbty00030bp1a5o0aUL//v05fPgwlStXpk2bNjRu3JiHHvr9fJ7du3cnNTWVBg0aMGzYMFq1csXvoqOjGTduHP369aNp06YZ3Su9evViypQpGRc6x44dy4oVK4iJiaFhw4a8+uqrgJtucP78+TRq1IjJkydn24UE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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(lins_x, linx_y, color=\"C1\", label=\"Hyperboloid\")\n",
    "plt.scatter(x_start[0,1], x_start[0,0], color=\"C0\", label=\"Start point\")\n",
    "plt.arrow(x_start[0,1], x_start[0,0], u_on_s[0,1], u_on_s[0,0], width=0.01, color=\"C2\")\n",
    "\n",
    "plt.scatter(pe[0,1], pe[0,0], color=\"C3\", label=\"Retracted point\")\n",
    "plt.plot(np.concatenate((x_start[0,1]+ u_on_s[:,1], pe[:,1])), \n",
    "         np.concatenate((x_start[0,0]+ u_on_s[:,0], pe[:,0])), \n",
    "         color=\"C0\", linestyle=\"--\", linewidth=1)\n",
    "\n",
    "plt.legend()\n",
    "plt.title(\"Exp mapping\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Expmap0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_start = th.randn((1,dim))\n",
    "zp = th.ones_like(x_start)\n",
    "d = zp.size(1) - 1\n",
    "x_start = th.cat((zp.narrow(1, 0, 1) * np.sqrt(k), zp.narrow(1, 1, d) * 0.), dim=1)\n",
    "\n",
    "u_on_s = th.randn((1, dim))\n",
    "u_on_s = man.proju(x_start, u_on_s)\n",
    "\n",
    "pe = man.expmap(x_start, u_on_s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(True, None)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "man._check_point_on_manifold(pe[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Exp mapping')"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(lins_x, linx_y, color=\"C1\", label=\"Hyperboloid\")\n",
    "plt.scatter(x_start[0,1], x_start[0,0], color=\"C0\", label=\"Start point\")\n",
    "plt.arrow(x_start[0,1], x_start[0,0], u_on_s[0,1], u_on_s[0,0], width=0.01, color=\"C2\")\n",
    "\n",
    "plt.scatter(pe[0,1], pe[0,0], color=\"C3\", label=\"Retracted point\")\n",
    "plt.plot(np.concatenate((x_start[0,1]+ u_on_s[:,1], pe[:,1])), \n",
    "         np.concatenate((x_start[0,0]+ u_on_s[:,0], pe[:,0])), \n",
    "         color=\"C0\", linestyle=\"--\", linewidth=1)\n",
    "\n",
    "plt.legend()\n",
    "plt.title(\"Exp mapping\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Logmap"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_start = th.randn((1,dim))\n",
    "x_start = man.projx(x_start)\n",
    "\n",
    "x_target = th.randn((1, dim))\n",
    "x_target = man.projx(x_target)\n",
    "\n",
    "v = man.logmap(x_start, x_target)\n",
    "x_end_ = man.expmap(x_start, v)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Exp mapping')"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(lins_x, linx_y, color=\"C1\", label=\"Hyperboloid\")\n",
    "plt.scatter(x_start[0,1], x_start[0,0], color=\"C0\", label=\"Start point\")\n",
    "plt.arrow(x_start[0,1], x_start[0,0], v[0,1], v[0,0], width=0.01, color=\"C2\")\n",
    "\n",
    "plt.scatter(x_target[0,1], x_target[0,0], color=\"C3\", label=\"Target point\")\n",
    "plt.plot(np.concatenate((x_start[0,1]+ v[:,1], x_target[:,1])), \n",
    "         np.concatenate((x_start[0,0]+ v[:,0], x_target[:,0])), \n",
    "         color=\"C0\", linestyle=\"--\", linewidth=1)\n",
    "\n",
    "plt.legend()\n",
    "plt.title(\"Exp mapping\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Logmap0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_target = th.randn((1, dim))\n",
    "x_target = man.projx(x_target)\n",
    "\n",
    "zp = th.ones_like(x_target)\n",
    "d = zp.size(1) - 1\n",
    "x_start = th.cat((zp.narrow(1, 0, 1) * np.sqrt(k), zp.narrow(1, 1, d) * 0.), dim=1)\n",
    "\n",
    "\n",
    "v = man.logmap0(x_target)\n",
    "x_end_ = man.expmap(x_start, v)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Exp mapping')"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(lins_x, linx_y, color=\"C1\", label=\"Hyperboloid\")\n",
    "plt.scatter(x_start[0,1], x_start[0,0], color=\"C0\", label=\"Start point\")\n",
    "plt.arrow(x_start[0,1], x_start[0,0], v[0,1], v[0,0], width=0.01, color=\"C2\")\n",
    "\n",
    "plt.scatter(x_target[0,1], x_target[0,0], color=\"C3\", label=\"Target point\")\n",
    "plt.plot(np.concatenate((x_start[0,1]+ v[:,1], x_target[:,1])), \n",
    "         np.concatenate((x_start[0,0]+ v[:,0], x_target[:,0])), \n",
    "         color=\"C0\", linestyle=\"--\", linewidth=1)\n",
    "\n",
    "plt.legend()\n",
    "plt.title(\"Exp mapping\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Uniform sampling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "uniform_s = man.random_normal((10,2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f6c14883b38>"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(lins_x, linx_y, color=\"C1\", label=\"Hyperboloid\")\n",
    "plt.scatter(uniform_s[:,1], uniform_s[:,0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Origin point"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f6c147cb5f8>"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "uniform_s = man.origin((1,2))\n",
    "plt.plot(lins_x, linx_y, color=\"C1\", label=\"Hyperboloid\")\n",
    "plt.scatter(uniform_s[:,1], uniform_s[:,0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Geodesic"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "t = np.linspace(0, 1, 100)\n",
    "x_start = th.randn((1,dim))\n",
    "x_start = man.projx(x_start)\n",
    "\n",
    "u = th.randn((1, dim))\n",
    "u = man.proju(x_start, u)\n",
    "u = u / math.norm(u, keepdim=True)  # unit-speed vector"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "from celluloid import Camera\n",
    "fig = plt.figure()\n",
    "camera = Camera(fig)\n",
    "\n",
    "prev_points = []\n",
    "\n",
    "for t_i in t:\n",
    "    point = man.geodesic_unit(th.Tensor([t_i]), x_start, u)\n",
    "    plt.plot(lins_x, linx_y, color=\"C1\", label=\"Hyperboloid\")\n",
    "    plt.scatter(point[0,1], point[0,0], color=\"r\")\n",
    "    plt.scatter(x_start[0,1], x_start[0,0], color=\"b\", label=\"Starting point\")\n",
    "    camera.snap()\n",
    "\n",
    "camera.snap()\n",
    "plt.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<video width=\"432\" height=\"288\" controls autoplay loop>\n",
       "  <source type=\"video/mp4\" src=\"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAnC21kYXQAAAKuBgX//6rcRem9\n",
       "5tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTUyIHIyODU0IGU5YTU5MDMgLSBILjI2NC9NUEVHLTQg\n",
       "QVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDE3IC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcv\n",
       "eDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MSByZWY9MyBkZWJsb2NrPTE6MDowIGFuYWx5c2U9\n",
       "MHgzOjB4MTEzIG1lPWhleCBzdWJtZT03IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVm\n",
       "PTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0xIDh4OGRjdD0xIGNxbT0wIGRlYWR6\n",
       "b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9NiBsb29r\n",
       "YWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFj\n",
       "ZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJh\n",
       "bWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdl\n",
       "aWdodHA9MiBrZXlpbnQ9MjUwIGtleWludF9taW49MjUgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVz\n",
       "aD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBx\n",
       "cG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAABLiZYiE\n",
       "AC///vau/MsrRwuVLh1Ze7NR8uhJcv2IMH1oAAADAADVaeUGUpNWI76AAB5Ibwors2YBrIUv0NJN\n",
       "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\n",
       "bmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAA\n",
       "AQAABbdzdGJsAAAAs3N0c2QAAAAAAAAAAQAAAKNhdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA\n",
       "AbABIABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAA\n",
       "MWF2Y0MBZAAe/+EAGGdkAB6s2UGwloQAAAMABAAAAwGQPFi2WAEABmjr48siwAAAABx1dWlka2hA\n",
       "8l8kT8W6OaUbzwMj8wAAAAAAAAAYc3R0cwAAAAAAAAABAAAAZQAAAQAAAAAUc3RzcwAAAAAAAAAB\n",
       "AAAAAQAAAvhjdHRzAAAAAAAAAF0AAAABAAACAAAAAAEAAAQAAAAAAgAAAQAAAAABAAAFAAAAAAEA\n",
       "AAIAAAAAAQAAAAAAAAABAAABAAAAAAEAAAUAAAAAAQAAAgAAAAABAAAAAAAAAAEAAAEAAAAAAQAA\n",
       "AwAAAAABAAABAAAAAAEAAAMAAAAAAQAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAAAgAAAAABAAAF\n",
       "AAAAAAEAAAIAAAAAAQAAAAAAAAABAAABAAAAAAEAAAUAAAAAAQAAAgAAAAABAAAAAAAAAAEAAAEA\n",
       "AAAAAQAAAwAAAAABAAABAAAAAAEAAAUAAAAAAQAAAgAAAAABAAAAAAAAAAEAAAEAAAAAAQAABQAA\n",
       "AAABAAACAAAAAAEAAAAAAAAAAQAAAQAAAAABAAAFAAAAAAEAAAIAAAAAAQAAAAAAAAABAAABAAAA\n",
       "AAEAAAQAAAAAAgAAAQAAAAABAAAFAAAAAAEAAAIAAAAAAQAAAAAAAAABAAABAAAAAAIAAAIAAAAA\n",
       "AQAABQAAAAABAAACAAAAAAEAAAAAAAAAAQAAAQAAAAACAAACAAAAAAEAAAUAAAAAAQAAAgAAAAAB\n",
       "AAAAAAAAAAEAAAEAAAAAAQAABQAAAAABAAACAAAAAAEAAAAAAAAAAQAAAQAAAAABAAAFAAAAAAEA\n",
       "AAIAAAAAAQAAAAAAAAABAAABAAAAAAQAAAIAAAAAAQAABQAAAAABAAACAAAAAAEAAAAAAAAAAQAA\n",
       "AQAAAAABAAAFAAAAAAEAAAIAAAAAAQAAAAAAAAABAAABAAAAAAEAAAUAAAAAAQAAAgAAAAABAAAA\n",
       "AAAAAAEAAAEAAAAAAQAABQAAAAABAAACAAAAAAEAAAAAAAAAAQAAAQAAAAABAAAFAAAAAAEAAAIA\n",
       "AAAAAQAAAAAAAAABAAABAAAAAAEAAAUAAAAAAQAAAgAAAAABAAAAAAAAAAEAAAEAAAAAAQAABAAA\n",
       "AAACAAABAAAAAAEAAAMAAAAAAQAAAQAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAGUAAAABAAABqHN0\n",
       "c3oAAAAAAAAAAAAAAGUAABWYAAAA6AAAAEAAAAAmAAAAewAAADIAAAAmAAAAFgAAAEsAAAAuAAAA\n",
       "FAAAABMAAABOAAAAJgAAAEkAAAAhAAAARQAAACUAAAA+AAAAcAAAACwAAAAXAAAAEwAAAEYAAAAw\n",
       "AAAAEwAAACYAAABPAAAAHwAAAFEAAAAxAAAAEwAAABIAAAA8AAAALQAAABEAAAAWAAAAMAAAAC0A\n",
       "AAARAAAAEQAAACoAAAArAAAAHQAAAC0AAAApAAAAEAAAABAAAAA/AAAALwAAAD4AAAAvAAAAEwAA\n",
       "ABMAAABFAAAANQAAAFYAAAAtAAAAFgAAABIAAAA5AAAAIwAAAB0AAAAiAAAANgAAAC0AAAAhAAAA\n",
       "EgAAADUAAAAtAAAALgAAAE0AAABOAAAAKgAAABUAAAAZAAAAKAAAAB8AAAASAAAAHwAAACcAAAAg\n",
       "AAAAIwAAABEAAABDAAAAKAAAABQAAAAWAAAASgAAACkAAAAfAAAAHAAAADUAAAAoAAAAHAAAABUA\n",
       "AAAeAAAALgAAABIAAABJAAAASAAAABRzdGNvAAAAAAAAAAEAAAAsAAAAYnVkdGEAAABabWV0YQAA\n",
       "AAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAtaWxzdAAAACWpdG9vAAAAHWRh\n",
       "dGEAAAABAAAAAExhdmY1Ny44My4xMDA=\n",
       "\">\n",
       "  Your browser does not support the video tag.\n",
       "</video>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import HTML\n",
    "animation = camera.animate(interval=20)\n",
    "HTML(animation.to_html5_video())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Distance"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let $\\mathbf{x} \\in \\mathbb{H}^{d, K}, \\mathbf{u} \\in \\mathcal{T}_{\\mathbf{x}} \\mathbb{H}^{d, K}$ be unit-speed. The unique unit-speed geodesic $\\gamma_{\\mathbf{x} \\rightarrow \\mathbf{u}}(\\cdot)$ such that $\\gamma_{\\mathbf{x} \\rightarrow \\mathbf{u}}(0)=\\mathbf{x}, \\dot{\\gamma}_{\\mathbf{x} \\rightarrow \\mathbf{u}}(0)=\\mathbf{u}$ is $\\gamma_{\\mathbf{x} \\rightarrow \\mathbf{u}}^{K}(t)=\\cosh \\left(\\frac{t}{\\sqrt{K}}\\right) \\mathbf{x}+\\sqrt{K} \\sinh \\left(\\frac{t}{\\sqrt{K}}\\right) \\mathbf{u}$\n",
    "and the intrinsic distance function between two points $\\mathbf{x}, \\mathbf{y}$ in $\\mathbb{H}^{d, K}$ is then:\n",
    "$$\n",
    "d_{\\mathcal{L}}^{K}(\\mathbf{x}, \\mathbf{y})=\\sqrt{K} \\operatorname{arcosh}\\left(-\\langle\\mathbf{x}, \\mathbf{y}\\rangle_{\\mathcal{L}} / K\\right)\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "k = 4\n",
    "man_3d = Lorentz(k=k)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "point = th.randn((1,3)) # sample points (~N(0,1))\n",
    "point = man_3d.projx(point) # project onto the hyperboloid\n",
    "\n",
    "sample_p = th.randn((50,3))*2 # bigger variance\n",
    "sample_p = man_3d.projx(sample_p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "ps = th.randn((300,2))\n",
    "ps = ps / ps.norm(dim=-1,keepdim=True) / 1.5\n",
    "ps_h = math.poincare_to_lorentz(ps, k=th.Tensor([k]), eps=1e-8)\n",
    "ps_h = math.lorentz_to_poincare(ps_h, k=th.Tensor([k]))\n",
    "ps_h = math.poincare_to_lorentz(ps_h, k=th.Tensor([k]), eps=1e-8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(True, None)"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "man_3d._check_point_on_manifold(ps_h[0]) # check point in the manifold"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import cm\n",
    "import matplotlib.pyplot as plt\n",
    "from mpl_toolkits.mplot3d import axes3d, Axes3D\n",
    "import numpy as np\n",
    "\n",
    "lim_ = 5\n",
    "\n",
    "fig = plt.figure(figsize=(10,7))\n",
    "ax = fig.gca(projection='3d')\n",
    "\n",
    "x = np.arange(-lim_, lim_, 0.25)\n",
    "y = np.arange(-lim_, lim_, 0.25)\n",
    "x, y = np.meshgrid(x, y)\n",
    "z = np.sqrt((x**2 + y**2) + k)\n",
    "\n",
    "x_merge = np.concatenate((z.flatten()[None], y.flatten()[None], x.flatten()[None]), axis=0).T\n",
    "\n",
    "xcolors = man_3d.dist(point, th.from_numpy(x_merge).to(th.float32)).view(*(x.shape)).T.numpy()\n",
    "xcolors = np.log(xcolors)\n",
    "\n",
    "surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, linewidth=0, alpha=0.4, facecolors=cm.hot(xcolors))\n",
    "ax.scatter(point[:, 1], point[:, 2], point[:, 0], color=\"b\", s=30, label=\"Point on Hyperboloid\")\n",
    "\n",
    "point_disk = math.lorentz_to_poincare(point, k=k)\n",
    "sample_p_disk = math.lorentz_to_poincare(sample_p, k=k)\n",
    "\n",
    "ax.scatter(point_disk[:,0], point_disk[:,1], 0., color=\"r\", s=30, label=\"Point on disk\")\n",
    "\n",
    "# plot samples\n",
    "ax.scatter(sample_p[:, 1], sample_p[:, 2], sample_p[:, 0], color=\"C1\", s=10)\n",
    "ax.scatter(sample_p_disk[:, 0], sample_p_disk[:, 1], 0, color=\"C2\", s=2)\n",
    "\n",
    "\n",
    "# plot circle\n",
    "theta = np.linspace(0, 2*np.pi, 100)\n",
    "r = np.sqrt(1.0)\n",
    "x1 = r*np.cos(theta)\n",
    "x2 = r*np.sin(theta)\n",
    "\n",
    "ax.plot(x1, x2, 0., color=\"C3\", label=\"Disk\")\n",
    "\n",
    "# plot circle samples\n",
    "#ax.scatter(ps_h[:, 1], ps_h[:, 2], ps_h[:, 0], color=\"C4\", s=5, label=\"Point on the circle\")\n",
    "\n",
    "# TODO: add subplotting with poincare disk\n",
    "\n",
    "ax.set_zlim(bottom=0)\n",
    "plt.legend()\n",
    "plt.title(\"Hyperbolic and projection to the disk\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
